User:Ajoessen/Garminkarten selber bauen
Nachfolgend wird beschrieben, wie man sich aus OSM-Daten selber Karten für Garmin-Geräte bauen kann. Der dabei verwendete Kartenstil myTopo ist auf einer Sonderseite beschrieben. Alle Anweisungen gelten für Windows XP mit mittelmäßiger Ausstattung (2GB RAM). Damit sind Karten bis zur Größe von Deutschland (1,5GB) möglich. Alle verwendeten Dateien sind hier als Archiv myTopo.zip zu finden. Eine Gewährleistung wird hierfür ausdrücklich nicht übernommen.
Grundsätzliche Überlegungen
Der Datenbestand von OSM wächst ständig, die hardwareseitigen Begrenzungen leider nicht. So sind microSD-Karten auf 2GB begrenzt, die HC-Version funktioniert nicht unbedingt mit allen Geräten. Nach Angaben von Garmin könne auch microSD-HC-Karten mit mehr als 4GB Kapazität verwendet werden, allerdings darf die einzelne Garminkarte gmapsupp.img nicht mehr als 4GB groß sein. Diese Grenze ist bei eine Europakarte aus OSM-Daten heute schon erreicht. Aber auch bei einer heute 1,5GB großen Deutschlandkarte wird der GPS-Empfämnger schon schwerfällig in der Bedienung.
Deshalb ist es sinnvoller, sich auf sein Bundesland zu beschränken und zusätzlich für jede Tour eine aktuelle Karte zu bauen, und nur diese auf das Gerät zu schieben. Der beschriebene Arbeitsablauf ist daher unabhängig vom Datenvolumen funktionsfähig.
Für jede Kartenproduktion sollte ein eigenes Verzeichnis angelegt werden, um die bereits erzeugte Karte eines größeren Gebiets nicht zu überschreiben. Ausserdem muss jeweils eine andere Family ID verwendet werden, wenn beide Karten gleichzeitig verwendet werden sollen.
notwendige Software
osmosis http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.zip
osmconvert DE:osmconvert
srtm2osm http://topo.openstreetmap.de/Srtm2Osm-1.8.14.10_ext.zip
mkgmap http://www.mkgmap.org.uk/snapshots/
splitter http://www.mkgmap.org.uk/splitter/
BaseCamp http://www.garminonline.de/karten/outdoor/basecamp/
QLandkarteGT http://sourceforge.net/projects/qlandkartegt/
Notepad++ http://notepad-plus-plus.org/download/
TypViewer http://opheliat.free.fr/michel40/TYPViewer3.5/ Original Link ist down. neue Adresse:? http://typviewer.software.informer.com/3.5/download/
MapsetToolkit http://sites.google.com/site/cypherman1/
Ausserdem benötigt man noch ein paar Dateien, die auch in der Freizeitkarte-Entwicklungsumgebung enthalten sind:
Städteliste http://download.geonames.org/export/dump/cities15000.zip
Grenzen http://www.navmaps.eu/index.php/developers/bound
Küstenlinien http://fabianowski.eu/osm/coastlines/
Ausschneiden der Rohdaten
Grundlage sind die Extrakte der Geofabrik. Wenn weniger als ein Bundesland verwendet werden soll, bietet sich das Ausschneiden mit osmosis an. Damit es an den Kartenrändern keine weißen Flecke wegen unvollständiger Multipolygone gibt, werden diese komplett geladen:
bbox-mp.bat
D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --bb left=8.0 right=8.31 bottom=51.1 top=51.22 completeRelations=yes --tf accept-relations type=boundary,multipolygon --used-way --used-node outPipe.0=MP --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --bb left=8.0 right=8.31 bottom=51.1 top=51.22 --tf reject-relations type=boundary,multipolygon outPipe.0=bbox --merge inPipe.0=MP inPipe.1=bbox --wx bbox.osm
Im ersten Durchgang werden nur Grenzen und Multipolygone komplett geladen, im zweiten Schritt alles andere scharf abgeschnitten, anschliessend beides zusammengefügt zur bbox.osm.
Alternativ kann auch das Programm osmconvert benutzt werden:
bbox.bat
osmconvert.exe D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf -b=8.0,51.1,8.31,51.22 -o=bbox.osm --complex-ways
Hier sorgt die option --complex-ways für komplette Multipolygone.
Für kleinere Bereiche kann man auch mit JOSM heruntergeladene Daten als Quelle verwenden. Dabei sollte man gegebenenfalls Multipolygone komplett nachladen.
Höhendaten
Um Höhenlinien auf der Karte zu erzeugen, werden die SRTM-Daten der NASA verwendet. Diese werden mit dem Programm SRTM2OSM in OSM-Dateien konvertiert. Im Kartenstil wird zwischen Haupt- und Nebenhöhenlinien unterschieden, z.B. alle 400m, 100m und 20m. Dementsprechend werden die Daten in SRTM2OSM kategorisiert:
srtm-nrw.bat
Srtm2osm.exe -bounds1 50.324 5.878 52.528 9.444 -cat 400 100 -o srtm-nrw.osm
Wenn das Programm schon früher zur Erzeugung von Höhenlinien benutzt wurde, stehen die Rohdaten der NASA im Unterverzeichnis srtm\SrtmCache, brauchen also nicht neu heruntergeladen werden.
Dieser Vorgang braucht nur einmalig je Kartenbereich durchgeführt zu werden, da sich die SRTM-Daten nicht ändern.
Splitten der Daten
Garminkarten sind in den meisten Fällen in rechteckige Teilkacheln (*.img) aufgeteilt, da der Arbeitsspeicher der Geräte begrenzt ist. Um ein Routing über die Kachelgrenzen zu ermöglichen, sind gewisse Randbedingungen einzuhalten. Das Java-Programm splitter.jar teilt die OSM-Rohdaten hierfür optimiert auf. Maßgebendes Kriterium ist die Anzahl der Knoten der OSM-Datei. Mit einem Maximalwert von 1000000 Knoten ist ein fehlerfreier Arbeitsablauf gewährleistet. Die Datei splitter.zip wird in ein Unterverzeichnis des anschliessend benötigten Programms mkgmap installiert. Da das Programm Schwerstarbeit leisten muß, wird Java mit dem maximal möglichen Arbeitsspeicher gestartet. Das ist etwa 400MB weniger als im Rechner vorhanden. Sollte das nicht ausreichen, hilft nur Aufrüsten, oder sich mit weniger Eingangsdaten zu begnügen.
myTopo-splitter.bat:
java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\splitter\splitter.jar --geonames-file=E:\Freizeitkarte\cities\cities15000.zip --mixed --mapid=60150001 --max-nodes=1000000 --output=xml --output-dir=E:\mkgmap\myTopo-NRW\myTopo-osm D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf 2>error1.txt
Das Programm legt im gewählten Ausgabeordner myTopo-osm Dateien 60150001.osm.gz folgende an, sowie zwei Dateien areas.list und template.args mit Angaben über die erzeugten Dateien, die anschliessend an mkgmap übergeben werden. Für die Benennung der Teildaten wird die Datei cities15000.zip aus der Freizeitkarte-Entwicklungsumgebung von User toc-rox benutzt.
Die Höhendaten müssen ebenfalls gesplittet werden. Um die bereits erzeugten Dateien mit den Splitergebnissen nicht zu überschreiben, geschieht dies in einem separaten Ordner, und mit einer anderen Anfangs-mapid:
srtm-splitter.bat:
java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\splitter\splitter.jar --geonames-file=E:\Freizeitkarte\cities\cities15000.zip --mixed --mapid=70150001 --max-nodes=1000000 --output=xml --output-dir=E:\mkgmap\myTopo-NRW\srtm-osm D:\Karten\OpenStreetMap\Srtm2Osm\srtm-nrw.osm 2>error2.txt
Bei fehlerfreier Verarbeitung sind die Dateien error1.txt und error2.txt 0 Bytes groß.
Verarbeitung mit mkgmap
In diesem Schritt wird aus jeder OSM-Datei des Splitters eine .img-Datei erzeugt. Die img aus OSM und SRTM werden in einem gemeinsamen Verzeichnis img erstellt.
myTopo-mkgmap.bat
cd img java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar -c ..\myTopo.cfg -c ..\myTopo-osm\template.args ..\myTopo.TYP
splitter-mkgmap.bat
cd img java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar -c ..\srtm.cfg -c ..\srtm-osm\template.args ..\myTopo.TYP
Dazu werden neben den vom Splitter erzeugten Dateien template.args folgende Konfiguratiosndateien verwendet:
myTopo.cfg:
style-file=E:\mkgmap\myTopo-NRW\myTopostil product-id=1 latin1 route preserve-element-order remove-short-arcs adjust-turn-headings link-pois-to-ways drive-on-right bounds=E:/Freizeitkarte/bounds location-autofill=bounds,nearest add-pois-to-areas coastlinefile: E:/Freizeitkarte/coasts/coastlines_europe.osm.pbf generate-sea:multipolygon,extend-sea-sectors family-id=5001 family-name=myTopo product-version=1 series-name=myTopo
Hierbei wird auf die Dateien bounds und coastlines_europe.osm.pbf der bereits erwähnten Freizeitkarte-Entwicklungsumgebung zurückgegriffen. Die Stildateien befinden sich im Unterordner myTopostil, das verwendete Typfile ist myTopo.TYP (Großschreibung ist wichtig!). Die familiy-id muß mit derjenigen in myTopo.TYP übereinstimmen. MapsetToolkit ist aber später in der Lage, diese auf den richtigen Wert zu ändern.
Analog für die SRTM-Daten:
srtm.cfg:
style-file=E:\mkgmap\myTopo-NRW\myTopostil latin1 preserve-element-order remove-short-arcs location-autofill=bounds,nearest add-pois-to-areas
Zusammenbau der Karte
Für die verwendung in BaseCamp und QLandarteGT wird ein Mapset erzeugt, und für das Garmin-Gerät eine gmapsupp.img:
myTopo-tdb.bat
copy myTopo.TYP img cd img java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar --show-profiles=1 -c ..\tdb.cfg 6*.img 7*.img myTopo.TYP
tdb.cfg
style-file=E:\mkgmap\myTopo-NRW\myTopostil product-id=1 country-name=Deutschland country-abbr=DE region-name=Nordrhein-Westfalen region-abbr=NRW tdbfile gmapsupp latin1 route preserve-element-order index family-id=5001 family-name=myTopo product-version=1 series-name=myTopo overview-mapname=myTopo overview-mapnumber=50010000
Hat man Änderungen am Typfile vorgenommen, braucht nur dieser Schritt wiederholt zu werden. Bei Änderungen am Kartenstil die myTopo-mkgmap.bat und myTopo-tdb.bat; und nach Aktualisierung der Rohdaten alle myTopo-Batchdateien, nicht aber die SRTM-Batchdateien.
Einbindung in BaseCamp
Hierzu ist es notwendig, die Karte in der Registry anzumelden. Dies übernimmt das Programm MapsetToolkit. Nach dem Start links die Schaltfläche "Install" anklicken (auf keine Fall Start!)
Registry name: myTopo_NRW TDB file: Schaltfläche ... myTopo.tdb im Unterverzeichnis img suchen und Öffnen Overview map: myTopo.img (Das Verzeichnis wird automatisch übernommen) TYP file: myTopo.TYP
Schaltfläche APPLY
Wenn Family ID von tdb und TYP nicht zusammenpassen, kann MapsetToolkit dies anpassen. Die Familiy ID darf noch nicht von anderen installierten Karten verwendet sein. Die Werte können nachträglich mit der Schaltfläche Edit geändert werden.
Beim Ausprobieren von eigenen Stilen sollte man vorzugsweise kleine Gebiete verarbeiten. Ausserdem sollte man dann den TileCache von Basecamp selber leeren, um Änderungen gegenüber der letzen Version zu sehen. Der Tilecache liegt bei Windows XP unter C:\Dokumente und Einstellungen\<Benutzername>\Lokale Einstellungen\Anwendungsdaten\Garmin\BaseCamp\TileCache Um diesen Ordner im Explorer zu sehen, müssen im Explorer unter Extras/Ordneroptionen/Ansicht folgende Haken gesetzt sein:
[ ] Erweiterungen bei bekannten Dateitypen ausblenden [x] Geschützte Systemdateien ausblenden [x] Inhalte von Systemordneren anzeigen ... Versteckte Dateien und Ordner [x] Alle Dateien und Ordner anzeigen
Alternativ kann man folgende Batchdatei verwenden: Cacheclaer.bat
@echo off echo j | del "C:\Dokumente und Einstellungen\<Benutzername>\Lokale Einstellungen\Anwendungsdaten\Garmin\BaseCamp\TileCache\*.*"
Der Benutzername ist entsprechend der Anmeldung bei Windows einzutragen.
Einbindung in Qlandkarte GT
Datei/Karte laden
Dateiname: myTopo.tdb im oben erzeugten Unterverzeichnis img wählen
Basiskarte: myTopo.img
Wenn man dann nur Rechtecke sieht, mit der +-Taste einzoomen, bis Wälder und Straßen erscheinen.
In Qlandkarte könne auch mehrere Garminkarten gleichzeitig geladen werden und/oder die online-OSM-Tiles oder Geotiff-Rasterkarten hinzugeladen werden.
Verwendung im Garmin-Gerät
Die erzeugte gmapsupp.img kann im Prinzip direkt in das Gerät in den Ordner Garmin geschoben werden. Allerdings funktioniert dann die Adressuche nicht. Stattdessen wird empfohlen, die Karte in BaseCamp zu laden, und dann bei angeschlossenem Gerät die Karte mit Extras/Karten installieren auf das Gerät zu schieben. Dann baut sich das Gerät beim Neustart seinen Suchindex neu, und kann zur Straßensuche verwendet werden. Sofern der Kartenspeicher ausreicht, kann man mehrere Karten abspeichern, die im Massenspeichermodus jeweils auf gmapsupp.img umbenannt werden können.